package br.ufscar.acumaaf.smc.service;

import java.util.ArrayList;
import java.util.List;

import br.ufscar.acumaaf.smc.dao.MatriculaUsuarioGrupoAtividadeFisicaDAO;
import br.ufscar.acumaaf.smc.dao.UsuarioDAO;
import br.ufscar.acumaaf.smc.model.MatriculaUsuarioGrupoAtividadeFisica;
import br.ufscar.acumaaf.smc.model.Usuario;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;


public class GeradorDadosMonitoramento extends Service implements Runnable{
		
	private List<MatriculaUsuarioGrupoAtividadeFisica> listaMatriculas;
	private List<Usuario> listaUsuarios;
	
	private boolean ativo;
	private int intervaloColeta;
	private int numeroParticipantes;
	private int pressaoSistolica;
	private int pressaoDiastolica;
	private int codigoSessao;
	private int codigoGrupoAtividadeFisica;
	
	public void onCreate(){
		ativo = true;
		new Thread(this).start();
	}
	
	public void onStart(Intent intent, int startId){
		listaMatriculas = new ArrayList<MatriculaUsuarioGrupoAtividadeFisica>();
		listaUsuarios = new ArrayList<Usuario>();
		Bundle extras = intent.getExtras();
		intervaloColeta = extras.getInt("intervaloColeta");
		numeroParticipantes = extras.getInt("numeroParticipantes");
		//Recupera o parâmetro passado pela Activity GerenciaAtividadeFisica
		codigoSessao = extras.getInt("codigosessao");
		codigoGrupoAtividadeFisica = extras.getInt("codigogrupoatividadefisica");
		listaMatriculas = (List<MatriculaUsuarioGrupoAtividadeFisica>) new MatriculaUsuarioGrupoAtividadeFisicaDAO(this).buscarTodasMatriculasPeloCodigoGrupoAtividadeFisica(codigoGrupoAtividadeFisica);
		for (MatriculaUsuarioGrupoAtividadeFisica mat : listaMatriculas) {
			Usuario usuario = new Usuario();
			usuario = new UsuarioDAO(getApplicationContext()).buscarUsuarioPeloCodigo(mat.getCodigoUsuario());
			listaUsuarios.add(usuario);
		}
	}
	
	public void run(){
		while(ativo){
			geraDados();
		}
		//Encerra o Serviço	
		stopSelf();
	}
	
	private void geraDados() {
		try {
			for (int i = 0; i < listaUsuarios.size(); i++) {
				pressaoSistolica = (int)(Math.random()*3 + 10)*10;
				pressaoDiastolica = pressaoSistolica - 40;
				Log.i("smc","Gerador de Dados: Participante (" + listaUsuarios.get(i).getCodigoUsuario() + ") - "+ listaUsuarios.get(i).getNome() + " - " + "Pressão Arterial = " + pressaoSistolica + "x" + pressaoDiastolica);	
			}
			Thread.sleep(intervaloColeta*1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	public void onDestroy(){
		ativo = false;
	}
}
